\section{Vergelijking technologieën}
\label{sec:vergelijking}

\subsection{iOS vs. HTML5}
\label{sec:vergelijking-ioshtml5}
%TODO Glenn
iOS was veel inwerken, vooral door het nog niet vertrouwd zijn met Mac OSX en Objective C. Met HTML5/javascript had ik al wat ervaring.
Objective C is ook heel anders dan Java of andere talen die we gezien hebben in onze vooropleiding. Het is zeker niet slecht om ook
hiermee eens gewerkt te hebben, maar het was wel even aanpassen.

Schermen toevoegen in iOS was heel gemakkelijk met storyboarding feature. Het was echt kinderspel om verschillende schermen aan te maken
en de overgangen ertussen te defini\"eren. Veranderen van themes en look-and-feel was dan weer veel makkelijker in HTML5/jQuery. Dit komt omdat er tools zijn zoals Themeroller en de aanwezigheid van CSS, dat speciaal gemaakt is om te 'themen'. Het standaard iOS theme gebruiken is simpel maar een aangepast theme maken vraagt heel wat werk.

Twitter integratie in iOS was zeer makkelijk aangezien iOS-gebruikers hun Twitter-account kunnen instellen op het iDevice zelf. Een programmeur kan dan gebruik maken van een standaard bibliotheek om Twitter te integreren in zijn applicatie. Of dit was toch het geval met tweets versturen vanuit de applicatie. Koen leek problemen te hebben met inloggen via Twitter.

Documentatie van iOS was er wel, en was volledig, maar met de documentatie van jQuery kon je veel sneller onderweg. Er zijn veel voorbeelden, tutorials en handige live demo's van stukken code.

JSON was in beide technologieën geen probleem. Voor iOS bestaan er gemakkelijk te gebruiken API's en bij jQuery zijn er methodes voorzien voor AJAX requests (\cc{\$.ajax} en \cc{\$.post}) en kunnen JSON objecten als gewone objecten gebruikt worden (bv. \cc{student.name}).

Uiteindelijk vond ik HTML5/JQuery iets makkelijker, maar dat komt omdat ik daar al meer vertrouwd mee was. Het duurde even voor ik op weg was met iOS, maar uiteindelijk kon ik daar ook wel vrij vlot mee overweg. Het voordeel van HTML5 is wel dat applicaties op meerdere platforms kunnen draaien, niet enkel op iOS, Android of PC.

\subsection{Android vs. iOS}
\label{sec:vergelijking-androidios}
%TODO Koen
Zoals in de sectie hierboven vermeld staat, is het even zoeken naar de juiste aanpak voor het programmeren in \texttt{iOS}. \texttt{Objective C} toont veel vergelijkingen met \texttt{Java} dat gebruikt wordt bij \texttt{Android}, maar toch is het een programmeertaal die nog totaal ongekend was. Hierdoor heeft het inwerken in \texttt{iOS} veel meer tijd gekost dan eerder gedacht.
Het invoegen van schermen is zowel in \texttt{iOS} als in \texttt{Android} zeer gemakkelijk. In \texttt{iOS} kan dit via het storyboard waardoor alles nog eens overzichtelijk wordt weergegeven. In \texttt{Android} moet er een \texttt{Activity} aan een xml-bestand gekoppeld worden die zorgt voor de layout van een scherm. 

Ten op zichte van \texttt{Android} heeft \texttt{iOS} eerder beperkte tutorials \& informatie beschikbaar op het internet. Daar komt nog eens bij dat sinds iOS 5 er enkele drastiche veranderingen zijn doorgevoerd zodat code van oudere versies niet meer compatibel is met de huidige versie.
Zo werd er in de applicatie voor het implementeren van \texttt{HTTP Posts} eerst geopteerd voor een framework dat enkel compatibel was voor \texttt{iOS 4}, maar niet voor \texttt{iOS 5}. Het heeft enkele uren gekost om er achter te komen dat hier de fout lag en dus naar een andere oplossing gezocht moest worden.

\texttt{Android} heeft een zeer grote online community. Deze programmeeromgeving is dan ook veel toegankelijker voor vele ontwikkelaars omwille van commerciele redenen. Maar ook dankzij de meest gebruikte programmeertaal \texttt{Java} opent dit voor vele de weg naar het programmeren in \texttt{Android}.


\subsection{HTML5 vs. Android}
\label{sec:vergelijking-html5android}
%TODO Sander

\texttt{HTML5} is maar een beperkte taal.  Het dient enkel voor statische weergave van data en is op zich niet praktisch om een dynamische applicatie te ontwerpen.  In combinatie met \texttt{jQuery} zijn de mogelijkheden minder beperkt.  Met \texttt{jQuery} kan je makkelijk communiceren met een databank. \texttt{jQuery Mobile} maakt daarbij asynchrone transacties met een databank mogelijk via \texttt{Ajax}.  Dergelijke transacties in \texttt{Android\textbackslash Java} schrijven is veel complexer.  

Het grafische aspect van \texttt{jQuery Mobile} scoort ook veel beter dan \texttt{Android}.  Tabellen,  knoppen,  forumlieren, e.d. toevoegen vraagt maar een kleine moeite.  Om dit in \texttt{Android} te realiseren moeten alle grafische elementen in XML worden gegoten,  deze parsen zodat ze in de \texttt{R}-klasse beschikbaar zijn,  een \texttt{View} aanmaken en deze \texttt{View} met het juiste grafische object verbinden.  De \texttt{Android} plugin voor Eclipse bevat wel een interface om de XML-files automatisch te genereren maar deze doet niet altijd wat je wil.  

De transities tussen de verschillende schermen programmeren lukt veel makkelijker in \texttt{HTML5}.  Verschillende HTML-pagina's koppelen we allemaal met \texttt{<a href> ... </a>} in tegenstelling tot het combineren van \texttt{Android Activities}.  Hier moeten we rekening houden met de stack van \texttt{Activities}.  

Zowat alle andere dingen zijn makkelijker in \texttt{Android} te implementeren.  Hiermee bedoelen we dan vooral het organiseren en manipuleren van data.  Met de objectgeoriënteerde aanpak in \texttt{Java} kunnen we alle data uit de databank ophalen en ze in objecten organiseren zoals ze in de tabellen van de databank staan.  Het manipuleren van data is bijvoorbeeld het sorteren van een lijst studenten op basis van hun score.  

Door onze vooropleiding kunnen we wel zeggen dat programmeren met \texttt{Android\textbackslash Java} natuurlijker aanvoelde.  Om in \texttt{HTML5} van start te gaan moet je je eerst wat inwerken in \texttt{HTML,  jQuery,  JavaScript,  JSP en CSS}.  